<?php
use core\lib\model;

  function p($var){
      echo "<pre style='background:#ccc;display:inline-block;padding:10px;border-radius:5px;'>";
    if(is_bool($var)){
      var_dump($var);
    }else if(is_null($var)){
      var_dump(NULL);
    }else{
       print_r($var);
    }
    echo "</pre><br/>";
  }

  function C($file,$name=NULL){
    $conf=new \core\lib\conf();
    return $conf::get($file,$name);
  }

  function get($name=null){
    if(is_null($name))
      return $_GET;
    return $_GET[$name];
  }


  /**
   * 获取输入参数 支持过滤和默认值
   * 使用方法:
   * <code>
   * I('id',0); 获取id参数 自动判断get或者post
   * I('post.name','','htmlspecialchars'); 获取$_POST['name']
   * I('get.'); 获取$_GET
   * </code>
   * @param string $name 变量的名称 支持指定类型
   * @param mixed $default 不存在的时候默认值
   * @param mixed $filter 参数过滤方法
   * @return mixed
   */
  function I($name,$default='',$filter=null) {
      if(strpos($name,'.')) { // 指定参数来源
          list($method,$name) =   explode('.',$name,2);
      }else{ // 默认为自动判断
          $method =   'param';
      }
      switch(strtolower($method)) {
          case 'get'     :   $input =& $_GET;break;
          case 'post'    :   $input =& $_POST;break;
          case 'put'     :   parse_str(file_get_contents('php://input'), $input);break;
          case 'param'   :
              switch($_SERVER['REQUEST_METHOD']) {
                  case 'POST':
                      $input  =  $_POST;
                      break;
                  case 'PUT':
                      parse_str(file_get_contents('php://input'), $input);
                      break;
                  default:
                      $input  =  $_GET;
              }
              if(C('VAR_URL_PARAMS') && isset($_GET[C('VAR_URL_PARAMS')])){
                  $input  =   array_merge($input,$_GET[C('VAR_URL_PARAMS')]);
              }
              break;
          case 'request' :   $input =& $_REQUEST;   break;
          case 'session' :   $input =& $_SESSION;   break;
          case 'cookie'  :   $input =& $_COOKIE;    break;
          case 'server'  :   $input =& $_SERVER;    break;
          case 'globals' :   $input =& $GLOBALS;    break;
          default:
              return NULL;
      }
      // 全局过滤
      if(C('VAR_FILTERS')) {
          $_filters    =   explode(',',C('VAR_FILTERS'));
          foreach($_filters as $_filter){
              // 全局参数过滤
              array_walk_recursive($input,$_filter);
          }
      }
      if(empty($name)) { // 获取全部变量
          $data       =   $input;
          $filters    =   isset($filter)?$filter:C('DEFAULT_FILTER');
          if($filters) {
              $filters    =   explode(',',$filters);
              foreach($filters as $filter){
                  $data   =   array_map($filter,$data); // 参数过滤
              }
          }
      }elseif(isset($input[$name])) { // 取值操作
          $data       =	$input[$name];
          $filters    =   isset($filter)?$filter:C('DEFAULT_FILTER');
          if($filters) {
              $filters    =   explode(',',$filters);
              foreach($filters as $filter){
                  if(function_exists($filter)) {
                      $data   =   is_array($data)?array_map($filter,$data):$filter($data); // 参数过滤
                  }else{
                      $data   =   filter_var($data,is_int($filter)?$filter:filter_id($filter));
                      if(false === $data) {
                          return	 isset($default)?$default:NULL;
                      }
                  }
              }
          }
      }else{ // 变量默认值
          $data       =	 isset($default)?$default:NULL;
      }
      // is_array($data) && array_walk_recursive($data,'think_filter');
      return $data;
  }
